package com.mmy.service.impl.constparameter;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.mmy.controller.UtilConstants;
import com.mmy.dao.constparameter.TConstParameterRepository;
import com.mmy.domain.constparameter.TConstParameter;
import com.mmy.domain.sys.TSysUser;
import com.mmy.service.ServiceCommon;
import com.mmy.service.constparameter.ConstParameterService;

@Service
public class ConstParameterServiceImpl implements ConstParameterService {
	@Autowired
	TConstParameterRepository tConstParameterRepository;
	@Autowired
	ServiceCommon common;

	/**
	 * 后台参数管理 显示页面
	 *
	 * @author 创建人 hanxl
	 * @date 创建日期 2020.12.23
	 */
	public List<TConstParameter> findByText(String pageNumber, String pageSize, String strText) {
		int iPageSize = 0;
		int iTempPageNo = 0;

		if (strText == null) {
			strText = "";
		}
		if (pageNumber == null) {
			pageNumber = "1";
		}
		if (pageSize == null) {
			iPageSize = 20;
		} else {
			iPageSize = Integer.valueOf(pageSize);
			iTempPageNo = (Integer.valueOf(pageNumber) - 1) * iPageSize;
		}

		List<TConstParameter> lstConstParameter = tConstParameterRepository.findALL(strText, iTempPageNo, iPageSize);
		return lstConstParameter;
	}

	/**
	 * 后台参数管理 显示页面 获取分页
	 *
	 * @author 创建人 hanxl
	 * @date 创建日期 2020.12.23
	 */
	public HashMap<String, Integer> mapConstParameter(String pageNumber, String pageSize, String strText) {
		if (strText == null) {
			strText = "";
		}
		HashMap<String, Integer> mapPage = common.getPage(pageNumber, pageSize,
				tConstParameterRepository.countALL(strText));
		return mapPage;
	}

	/**
	 * 后台参数管理 创建参数信息
	 *
	 * @author 创建人 hanxl
	 * @date 创建日期 2020.12.23
	 */
	public boolean createParameter(TConstParameter tConstParameter, TSysUser sessionSysUser) {
		// 查重
		// 第一步获得所有参数信息
		List<TConstParameter> lstConstParameter = tConstParameterRepository.findByText(tConstParameter.getText());
		if (lstConstParameter.size() == 0) {
			// 获得最大参数编号
			int iID = common.createMaxID(UtilConstants.TableName.T_Const_Parameter);
			tConstParameter.setID(iID);
			tConstParameter.setCreateDate(new Date());
			tConstParameter.setCreator(sessionSysUser.getUserName());
			tConstParameterRepository.save(tConstParameter.getID());
			tConstParameterRepository.save(tConstParameter);
			return true;
		}
		return false;
	}

	/**
	 * 获得最大编号
	 * 
	 * @return 返回值说明 最大ID
	 * @author 创建人 hanxl
	 * @date 创建日期 2020.12.23
	 */
	public int getMaxID() {
		// 流水号
		Object objCode = tConstParameterRepository.getMaxID();
		int iID = 0;
		if (objCode != null) {
			iID = Integer.parseInt(objCode.toString());
		}
		return iID;
	}

	/**
	 * 后台参数修改 查询该id的参数信息
	 * 
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.12.23
	 */
	public TConstParameter findByID(String strID) {
		int iID = Integer.parseInt(strID);
		return tConstParameterRepository.findByID(iID);

	}

	/**
	 * 函数功能说明：后台修改参数信息
	 *
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl
	 * @date 创建日期 2020.12.23
	 */
	public boolean updateParameter(TConstParameter tConstParameter, TSysUser sessionSysUser) {
		// 查重
		// 第一步获得所有参数信息
		List<TConstParameter> lstConstParameter = tConstParameterRepository.findByText(tConstParameter.getText());
		if (lstConstParameter.size() == 0) {
			int iID = tConstParameter.getID();
			// 定义一个新的实体类对象
			TConstParameter dbConstParameter = tConstParameterRepository.findByID(iID);
			dbConstParameter.setText(tConstParameter.getText());
			dbConstParameter.setValue(tConstParameter.getValue());
			dbConstParameter.setMemo(tConstParameter.getMemo());
			dbConstParameter.setModifyDate(new Date());
			dbConstParameter.setReviser(sessionSysUser.getUserName());
			tConstParameterRepository.save(dbConstParameter);
			return true;
		}
		return false;

	}

	/**
	 * 函数功能说明：后台删除参数信息
	 *
	 * @author 创建人 hanxl
	 * @date 创建日期 2020.12.23
	 */
	public void deleteParameter(String checkList) {
		// TODO Auto-generated method stub
		String[] strIDs = checkList.split(",");
		List<Integer> iIDs = new ArrayList<>();

		for (String strID : strIDs) {
			iIDs.add(Integer.parseInt(strID));
		}
		tConstParameterRepository.deleteByIDs(iIDs);
	}

	/**
	 * 函数功能说明：后台进入创建、修改招标 创建、修改投标页面 参数设置查询招标预算最大值
	 *
	 * @author 创建人 hanxl
	 * @date 创建日期 2020.12.23
	 */
	public TConstParameter getByText(String maxBudget) {

		return tConstParameterRepository.getByText(maxBudget);
	}

}
